Unicorn Server Install and config

jamesperet 9 years ago
parent
commit
47322e449c
4 changed files with 45 additions and 2 deletions
  1. 3 0
      Gemfile
  2. 7 0
      Gemfile.lock
  3. 1 2
      Procfile
  4. 34 0
      config/unicorn.rb

+ 3 - 0
Gemfile

@@ -2,6 +2,9 @@ source 'https://rubygems.org'
2 2
 
3 3
 ruby '2.0.0'
4 4
 
5
+# Use Unicorn server
6
+gem 'unicorn'
7
+
5 8
 # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
6 9
 gem 'rails', '4.0.4'
7 10
 

+ 7 - 0
Gemfile.lock

@@ -139,6 +139,7 @@ GEM
139 139
       railties (>= 3.0, < 5.0)
140 140
       thor (>= 0.14, < 2.0)
141 141
     json (1.8.1)
142
+    kgio (2.9.2)
142 143
     launchy (2.4.2)
143 144
       addressable (~> 2.3)
144 145
     less (2.5.0)
@@ -191,6 +192,7 @@ GEM
191 192
       activesupport (= 4.0.4)
192 193
       rake (>= 0.8.7)
193 194
       thor (>= 0.18.1, < 2.0)
195
+    raindrops (0.13.0)
194 196
     rake (10.3.2)
195 197
     rdoc (4.1.2)
196 198
       json (~> 1.4)
@@ -274,6 +276,10 @@ GEM
274 276
     uglifier (2.5.3)
275 277
       execjs (>= 0.3.0)
276 278
       json (>= 1.8.0)
279
+    unicorn (4.8.3)
280
+      kgio (~> 2.6)
281
+      rack
282
+      raindrops (~> 0.7)
277 283
     vegas (0.1.11)
278 284
       rack (>= 1.0.0)
279 285
     warden (1.2.3)
@@ -328,3 +334,4 @@ DEPENDENCIES
328 334
   turbolinks
329 335
   twitter-bootstrap-rails
330 336
   uglifier (>= 1.3.0)
337
+  unicorn

+ 1 - 2
Procfile

@@ -1,2 +1 @@
1
-web: bundle exec rails server -p $PORT
2
-worker: env QUEUE=* bundle exec rake resque:work
1
+web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

+ 34 - 0
config/unicorn.rb

@@ -0,0 +1,34 @@
1
+# config/unicorn.rb
2
+ 
3
+# See comment by @paulelliott
4
+worker_processes 3
5
+timeout 30
6
+preload_app true
7
+ 
8
+before_fork do |server, worker|
9
+  # Replace with MongoDB or whatever
10
+  if defined?(ActiveRecord::Base)
11
+    ActiveRecord::Base.connection.disconnect!
12
+    Rails.logger.info('Disconnected from ActiveRecord')
13
+  end
14
+ 
15
+  # If you are using Redis but not Resque, change this
16
+  if defined?(Resque)
17
+    Resque.redis.quit
18
+    Rails.logger.info('Disconnected from Redis')
19
+  end
20
+end
21
+ 
22
+after_fork do |server, worker|
23
+  # Replace with MongoDB or whatever
24
+  if defined?(ActiveRecord::Base)
25
+    ActiveRecord::Base.establish_connection
26
+    Rails.logger.info('Connected to ActiveRecord')
27
+  end
28
+ 
29
+  # If you are using Redis but not Resque, change this
30
+  if defined?(Resque)
31
+    Resque.redis = ENV['REDIS_URI']
32
+    Rails.logger.info('Connected to Redis')
33
+  end
34
+end